#include "cms.hh"      // class CMS
#include "posemath.h"  // POSEMATH classes
// translation types
CMS_STATUS CMS::update(PM_CARTESIAN& Cart)
{
    update(Cart.x);
    update(Cart.y);
    update(Cart.z);
    return (status);
}

CMS_STATUS CMS::update(PM_CARTESIAN* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_SPHERICAL& Sph)
{
    update(Sph.theta);
    update(Sph.phi);
    update(Sph.r);
    return (status);
}

CMS_STATUS CMS::update(PM_SPHERICAL* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_CYLINDRICAL& Cyl)
{
    update(Cyl.theta);
    update(Cyl.r);
    update(Cyl.z);
    return (status);
}

CMS_STATUS CMS::update(PM_CYLINDRICAL* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

// rotation types
CMS_STATUS CMS::update(PM_ROTATION_VECTOR& Rot)
{
    update(Rot.s);
    update(Rot.x);
    update(Rot.y);
    update(Rot.z);
    return (status);
}

CMS_STATUS CMS::update(PM_ROTATION_VECTOR* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_ROTATION_MATRIX& Mat)
{
    update(Mat.x);
    update(Mat.y);
    update(Mat.z);
    return (status);
}

CMS_STATUS CMS::update(PM_ROTATION_MATRIX* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_QUATERNION& Quat)
{
    update(Quat.s);
    update(Quat.x);
    update(Quat.y);
    update(Quat.z);
    return (status);
}

CMS_STATUS CMS::update(PM_QUATERNION* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_EULER_ZYZ& Zyz)
{
    update(Zyz.z);
    update(Zyz.y);
    update(Zyz.zp);
    return (status);
}

CMS_STATUS CMS::update(PM_EULER_ZYZ* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_EULER_ZYX& Zyx)
{
    update(Zyx.z);
    update(Zyx.y);
    update(Zyx.x);
    return (status);
}

CMS_STATUS CMS::update(PM_EULER_ZYX* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_RPY& Rpy)
{
    update(Rpy.y);
    update(Rpy.p);
    update(Rpy.r);
    return (status);
}

CMS_STATUS CMS::update(PM_RPY* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

// pose types
CMS_STATUS CMS::update(PM_POSE& Pose)
{
    update(Pose.tran);
    update(Pose.rot);
    return (status);
}

CMS_STATUS CMS::update(PM_POSE* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}

CMS_STATUS CMS::update(PM_HOMOGENEOUS& Hom)
{
    update(Hom.tran);
    update(Hom.rot);
    return (status);
}

CMS_STATUS CMS::update(PM_HOMOGENEOUS* x, int n)
{
    int i;
    for (i = 0; i < n; i++) { update(x[i]); }
    return (status);
}
